package com.linxiao.hrcrm.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 项目信息对象 crm_project
 * 
 * @author zhoudong
 * @date 2024-01-03
 */
public class CrmProject extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 项目状态，未开始 */
    public static final String STATUS_INIT = "INIT";
    /** 项目状态，进行中 */
    public static final String STATUS_PROGRESS = "PROGRESS";
    /** 项目状态，已结束 */
    public static final String STATUS_END = "END";

    /** 时薪计算方式，精确计算 */
    public static final String SALARY_CALCULATION_METHOD_ACCURATE = "ACCURATE";
    /** 时薪计算方式，刻钟计算 */
    public static final String SALARY_CALCULATION_METHOD_QUARTER = "QUARTER";
    /** 时薪计算方式，半点计算 */
    public static final String SALARY_CALCULATION_METHOD_HALF = "HALF";
    /** 时薪计算方式，小时计算 */
    public static final String SALARY_CALCULATION_METHOD_HOUR = "HOUR";

    /** 薪资单位：小时 */
    public static final String SALARY_UNIT_HOUR = "HOUR";
    /** 薪资单位：天 */
    public static final String SALARY_UNIT_DAY = "DAY";
    /** 薪资单位：月 */
    public static final String SALARY_UNIT_MOON = "MOON";



    /** ID */
    private Long id;

    /** 商户ID */
    @Excel(name = "商户ID")
    private Long mchId;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String name;

    /** 项目地址 */
    @Excel(name = "项目地址")
    private String address;

    /** 项目负责人（我方） */
    @Excel(name = "项目负责人", readConverterExp = "我=方")
    private Long employeeId;

    /** 项目对接人（甲方） */
    @Excel(name = "项目对接人", readConverterExp = "甲=方")
    private String clientContact;

    /** 对接人电话 */
    @Excel(name = "对接人电话")
    private String contactPhone;

    /** 项目所属公司 */
    @Excel(name = "项目所属公司")
    private Long companyId;

    /** 项目所属工地 */
    @Excel(name = "项目所属工地")
    private Long worksiteId;

    /** 项目状态，INIT-未开始、PROGRESS-进行中、END-已结束 */
    @Excel(name = "项目状态，INIT-未开始、PROGRESS-进行中、END-已结束")
    private String status;

    /** 单位薪资 */
    @Excel(name = "薪资单位")
    private String salaryUnit;

    /** 单位薪资 */
    @Excel(name = "单位薪资")
    private BigDecimal salaryRate;

    /** 项目时薪计算方式 */
    @Excel(name = "项目时薪计算方式")
    private String hourlyRateCalculation;

    /** 打卡开始时间 */
    @Excel(name = "打卡开始时间", width = 30)
    private String signInBegin;

    /** 打卡结束时间 */
    @Excel(name = "打卡结束时间", width = 30)
    private String signInEnd;

    /** 项目开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "项目开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 项目预计结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "项目预计结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date estimatedEndTime;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setMchId(Long mchId) 
    {
        this.mchId = mchId;
    }

    public Long getMchId() 
    {
        return mchId;
    }
    public void setName(String name) 
    {
        this.name = name;
    }

    public String getName() 
    {
        return name;
    }
    public void setAddress(String address) 
    {
        this.address = address;
    }

    public String getAddress() 
    {
        return address;
    }
    public void setEmployeeId(Long employeeId) 
    {
        this.employeeId = employeeId;
    }

    public Long getEmployeeId() 
    {
        return employeeId;
    }
    public void setClientContact(String clientContact) 
    {
        this.clientContact = clientContact;
    }

    public String getClientContact() 
    {
        return clientContact;
    }
    public void setContactPhone(String contactPhone) 
    {
        this.contactPhone = contactPhone;
    }

    public String getContactPhone() 
    {
        return contactPhone;
    }
    public void setCompanyId(Long companyId) 
    {
        this.companyId = companyId;
    }

    public Long getCompanyId() 
    {
        return companyId;
    }
    public void setWorksiteId(Long worksiteId) 
    {
        this.worksiteId = worksiteId;
    }

    public Long getWorksiteId() 
    {
        return worksiteId;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public BigDecimal getSalaryRate() {
        return salaryRate;
    }

    public void setSalaryRate(BigDecimal salaryRate) {
        this.salaryRate = salaryRate;
    }

    public void setHourlyRateCalculation(String hourlyRateCalculation)
    {
        this.hourlyRateCalculation = hourlyRateCalculation;
    }

    public String getHourlyRateCalculation() 
    {
        return hourlyRateCalculation;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEstimatedEndTime(Date estimatedEndTime) 
    {
        this.estimatedEndTime = estimatedEndTime;
    }

    public Date getEstimatedEndTime() 
    {
        return estimatedEndTime;
    }

    public String getSalaryUnit() {
        return salaryUnit;
    }

    public void setSalaryUnit(String salaryUnit) {
        this.salaryUnit = salaryUnit;
    }

    public String getSignInEnd() {
        return signInEnd;
    }

    public void setSignInEnd(String signInEnd) {
        this.signInEnd = signInEnd;
    }

    public String getSignInBegin() {
        return signInBegin;
    }

    public void setSignInBegin(String signInBegin) {
        this.signInBegin = signInBegin;
    }

    @Override
    public String toString() {
        return "CrmProject{" +
                "id=" + id +
                ", mchId=" + mchId +
                ", name='" + name + '\'' +
                ", address='" + address + '\'' +
                ", employeeId=" + employeeId +
                ", clientContact='" + clientContact + '\'' +
                ", contactPhone='" + contactPhone + '\'' +
                ", companyId=" + companyId +
                ", worksiteId=" + worksiteId +
                ", status='" + status + '\'' +
                ", salaryUnit='" + salaryUnit + '\'' +
                ", salaryRate=" + salaryRate +
                ", hourlyRateCalculation='" + hourlyRateCalculation + '\'' +
                ", signInBegin='" + signInBegin + '\'' +
                ", signInEnd='" + signInEnd + '\'' +
                ", startTime=" + startTime +
                ", estimatedEndTime=" + estimatedEndTime +
                '}';
    }
}
